package com.suning.sawp.intf.sys;

import com.suning.sawp.dto.common.QueryResult;
import com.suning.sawp.dto.common.ReturnMsg;
import com.suning.sawp.dto.mainpush.StoreManDto;
import com.suning.sawp.dto.sys.LoginLogShowDto;
import com.suning.sawp.dto.sys.StoreManBindDeviceInfo;
import com.suning.sawp.dto.sys.StoreManDeviceDto;
import com.suning.sawp.dto.sys.UserInfo;
import com.suning.vgs.follow.remote.store.StoreManDeviceParam;
import com.suning.vgs.follow.remote.store.StoreManMoible;

/**
 * 
 * 系统管理服务类<br> 
 * 〈功能详细描述〉
 *
 * @author 14062606
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface SystemService {
	/**
	 * 更新店员职位信息
	 * @param staffId 员工编号
	 * @return
	 */
	ReturnMsg<UserInfo> queryUserInfo(String staffId);
	
	/**
	 * 
	 * 功能描述: 根据店员工号查询所属手机号<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<StoreManMoible> queryStoreManMobile(String staffId);
	
	/**
	 * 
	 * 功能描述: 发送设备ID绑定的短信校验码<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @param requestIp
	 * @param mobileType
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<String> sendDeviceSms(String staffId, String requestIp, String mobileType);
	
	/**
	 * 
	 * 功能描述: 校验短信验证码<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @param mobielType
	 * @param validCode
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<String> validDeviceSms(String staffId, StoreManDto staffInfo,
			String mobileType, String validCode, String deviceName, String deviceId, String ip);
	
	/**
	 * 
	 * 功能描述: 查询登录日志<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @param pageSize
	 * @param pageNo
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<QueryResult<LoginLogShowDto>> queryLoginLogs(String staffId, int pageSize, int pageNo);
	
	/**
	 * 
	 * 功能描述: 查询店员绑定信息<br>
	 * 〈功能详细描述〉
	 *
	 * @param regionCode
	 * @param storeCode
	 * @param bindStatus
	 * @param staffId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<QueryResult<StoreManDeviceDto>> queryStoreManDeviceInfo(StoreManDeviceParam param);
	
	/**
	 * 
	 * 功能描述: 解绑设备ID<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId 解绑设备的工号
	 * @param opStaffId 操作解绑的工号
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<String> unBindDevice(String staffId, String opStaffId);
	
	/**
	 * 
	 * 功能描述: 后台设备绑定<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @param deviceId
	 * @param deviceName
	 * @param opStaffId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<String> bindDevice(String staffId, String opStaffId, String opStaffName);
	
	/**
     * 
     * 功能描述: 根据工号取绑定的设备信息<br>
     * 〈功能详细描述〉
     * 优先取缓存，没有查询
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
	StoreManBindDeviceInfo getCacheDeviceInfo(String staffId);
}
